package com.free.company.member.service;

import com.free.common.vo.ResultModel;
import com.free.company.member.logic.AuthInfoLogic;
import com.free.company.member.logic.DpUserLogic;
import com.free.company.member.model.ListInfo;
import com.free.company.member.model.User;
import com.free.ext.mybatis.model.entity.PageResponseModel;
import com.free.utils.CryptUtils;
import com.free.utils.crypt.SHACrypt;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Date;

/**
 * <p>
 * 功能概述:
 * </p>
 * <p>
 * 功能详述:
 * </p>
 */
@Service
public class DpUserService extends CommonService{
    /*========================================================================*
     *                         Public Fields (公共属性)
     *========================================================================*/

    /*========================================================================*
     *                         Private Fields (私有属性)
     *========================================================================*/

    private static final int PER_PAGE_SIZE = 1000;

    @Autowired
    private DpUserLogic logic;

    @Autowired
    private AuthInfoLogic authLogic;
    /*========================================================================*
     *                         Construct Methods (构造方法)
     *========================================================================*/

    /*========================================================================*
     *                         Public Methods (公有方法)
     *========================================================================*/

    public ResultModel getPageUsers(int skip){
        int page = 1;
        if(skip >= 1000){
            page = skip / 1000;
        }
        PageResponseModel<User> model = logic.getUsersByPageNo(page, PER_PAGE_SIZE);
        ListInfo lst = new ListInfo();
        lst.setTotal(model.getTotal());
        lst.setUsers(model.getList());
        return ResultModel.success(lst);
    }

    public ResultModel getUserInfoWithCheck(String appid, String ts, String sign, String userid){
        if(checkSign(appid,ts,sign)){
            return getUserInfo(userid);
        }
        return ResultModel.failure();
    }

    public ResultModel getUserInfo(String wxId){
        User user = authLogic.getUserInfo(wxId);
        return ResultModel.success(user);
//        ListInfo lst = new ListInfo();
//        ArrayList<User> users = new ArrayList<>();
//        users.add(user);
//        lst.setUsers(users);
//        lst.setTotal(1);
//        return ResultModel.success(lst);
    }

    /*========================================================================*
     *                         Private Methods (私有方法)
     *========================================================================*/
    public static void main(String[] args) {
        Date dt = new Date();
        System.out.println(dt.getTime());
        StringBuffer sb = new StringBuffer();
        sb.append("wx37870b4a0ffe27a9").append("8yXGTFAAKPvzsBFEI19G0MLjSm5tjB5ANx8aB8qruQF0CRU6yo-Ho5Ul-EJ7ZGSB").append(dt.getTime());
        System.out.println(SHACrypt.sha1Hex(sb.toString()));
        //SHACrypt.sha1Hex()
    }
}
